import axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse, AxiosError } from 'axios';  
  
// 创建一个 axios 实例，并设置默认配置  
const instance: AxiosInstance = axios.create({  
  headers: {  
    'Content-Type': 'application/json'  
  },  
  timeout: 60000, // 超时  
  baseURL: 'http://159.75.100.10:10085' // 请求接口地址，实际请求地址可能通过代理设置  
});  
  
// 请求拦截  
instance.interceptors.request.use((req: AxiosRequestConfig) => {  
  if (req.method === 'get') {  
    const url = req.url!; // 使用非空断言，因为我们知道 url 一定是存在的  
    const t = new Date().getTime();  
    if (url.indexOf('?') >= 0) {  
      req.url = `${url}&t=${t}`;  
    } else {  
      req.url = `${url}?t=${t}`;  
    }  
  }  
  return req;  
});  
  
// 响应拦截  
instance.interceptors.response.use(  
  (response: AxiosResponse) => {  
    return response.data;  
  },  
  (error: AxiosError) => {  
    // 响应失败统一处理  
    const { response } = error;  
    if (response) {  
      switch (response.status) {  
        case 400:  
          window.$vm.$message.error('请求无效');  
          break;  
        case 401:  
          window.$vm.$message.error({ message: '尚未登录请重新登录' });  
          break;  
        case 403:  
          window.$vm.$message.error('您没有权限这样做，请联系管理员');  
          break;  
        case 404:  
          window.$vm.$message.error('请求未找到');  
          break;  
        case 500:  
          window.$vm.$message.error('系统异常');  
          break;  
        case 504:  
          window.$vm.$message.error('请求超时，请稍后再试');  
          break;  
        default:  
          window.$vm.$message.error('系统异常');  
          break;  
      }  
    }  
    return Promise.reject(error);  
  }  
);  
  
export default instance;